import numpy as np

def group_connected(arr):
    # 初始化分组列表和已使用元素集合
    groups = []
    used = set()

    for pair in arr:
        # 当前对中的元素
        elements = set(pair)
        # 找到与当前元素有交集的已有分组
        to_merge = [g for g in groups if elements & g["elements"]]

        if to_merge:
            # 合并所有相关分组和当前元素
            merged_elements = elements.copy()
            for g in to_merge:
                merged_elements.update(g["elements"])
                groups.remove(g)

            # 添加合并后的分组
            groups.append({"elements": merged_elements, "order": list(merged_elements)})
        else:
            # 创建新分组
            groups.append({"elements": elements, "order": list(elements)})

    # 提取分组的有序列表（按首次出现顺序）
    result = [g["order"] for g in groups]
    return result